linux输入输出重定向及案例 您所在的位置:网站首页 linux 输出结果重定向 linux输入输出重定向及案例

linux输入输出重定向及案例

#linux输入输出重定向及案例| 来源: 网络整理| 查看: 265

重定向

什么是重定向?

将原本要输出在屏幕中的内容,重新定向输出到指定的文件或设备中。 ** 为什么要使用重定向?**

1.备份时,我们需要知道备份的结果

2.屏幕上输出信息,比较重要的时候,我们想要保存下来

3.定时任务,我们需要知道结果

4.执行命令时,明知道会报错,我们会使用重定向,将结果 放入 /dev/null

5.执行命令时,正确 结果和错误 结果会同时输出,将正确结果输出到常规日志,将错误结果输出到错误日志

重定向的分类 标准输入 标准输出 名称 文件描述符 作用 标准输入(stdin) 0 通常键盘(其他输入命令的终端设备) 标准输出(stdout) 1 默认输出到屏幕 错误输出(stderr) 2 默认输出到屏幕 文件名(filename) 3+ - [root@localhost ~]# ll /dev/std* lrwxrwxrwx 1 root root 15 3月 25 10:36 /dev/stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 3月 25 10:36 /dev/stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 3月 25 10:36 /dev/stdout -> /proc/self/fd/1 [root@localhost ~]# ll /proc/121169/fd/ 总用量 0 lrwx------ 1 root root 64 4月 7 11:28 0 -> /dev/pts/3 lrwx------ 1 root root 64 4月 7 11:28 1 -> /dev/pts/3 lrwx------ 1 root root 64 4月 7 11:27 2 -> /dev/pts/3 lr-x------ 1 root root 64 4月 7 11:28 3 -> /var/log/messages 输出重定向

/dev/null

/dev/pts/0

/dev/pts/1

/tmp/zls.txt

/root/1.txt

类型 符号 用途 备注 标准覆盖输出重定向 1> 将命令执行的正确结果默认输出的位置,修改为指定的文件或者终端(覆盖原有内容) 通常'>'即可,1可以不写,默认就是1 标准追加输出重定向 >> 将命令执行的正确结果,输出到指定文件的末尾(不覆盖原有内容) - 错误覆盖输出重定向 2> 将命令执行的错误结果默认输出的位置,修改为指定的文件或者终端(覆盖原有内容) - 错误追加输出重定向 2>> 将命令执行的错误结果,输出到指定文件的末尾(不覆盖原有内容) - 标准输入重定向 0/tmp/3.txt [root@localhost ~]# cat /tmp/3.txt wxx1 **标准追加输出重定向** 标准追加输出重定向

[root@localhost ~]# echo 456 >> /var/log/messages [root@localhost ~]# echo 123 >> /var/log/messages

**错误输出重定向** 错误输出重定向

[cdx@localhost ~]$ find /etc/ -type d

**将标准输出和错误输出都输出到相同的文件中** 将标准输出和错误输出都输出到相同的文件中

[cdx@localhost ~]$ find /etc/ -type d > /tmp/100.txt 2>&1

[cdx@localhost ~]$ find /etc/ -type d &> /tmp/101.txt

**将错误输出,重定向到黑洞** 将错误输出,重定向到黑洞

[root@localhost ~]# ls / /ooo 2>/dev/null

**脚本中使用重定向** 脚本中使用重定向 !/bin/bash

. /etc/init.d/functions

read -p "请输入要检测的IP:" IP

ping -c1 -W1 $IP &>/dev/null

if [ \(? -eq 0 ];then action "\)IP" /bin/true >> /tmp/IP_OK.txt else action "$IP" /bin/false >> /tmp/IP_FAILD.txt fi

输入重定向 [root@localhost ~]# mail -s "$(date +%F-%T)_test" [email protected] < /etc/passwd

[root@localhost opt]# echo -e "111\n222\n333" > file1.txt [root@localhost opt]# cat file1.txt 111 222 333 [root@localhost opt]# echo ' 1111 2222 3333 4444 ' > file2.txt [root@localhost opt]# cat >> 1.txt bbb > ccc > ddd > EOF [root@localhost opt]# cat >> 2.txt 111 222 333 444 Ctrl + d 结束 cat 4.install tomcat > 5.install redis > EOF 1.install mysql 2.install nginx 3.intsall php 4.install tomcat 5.install redis # 两条命令同时重定向 [root@localhost opt]# (ls ; date) > 1.txt (while :; do date; sleep 2; done) &>date.txt & #如果不希望某些命令的执行对当前 shell 环境产生影响,请在subshell中执行 [root@localhost ~]# (cd /boot; ls) 管道技术

管道操作符号:|,叫做管道符 作用:将管道符左边命令的标准输出,交给管道符右边命令的标准输入来处理 用法:cmd1|cmd2|cmd3| cmd4...

# 取出passwd文件中,uid最大的前五个 [root@localhost ~]# sort -nr -k 3 -t ':' /etc/passwd|head -5 # 统计出passwd文件中,所有用户的shell种类 [root@localhost ~]# awk -F: '{print $7}' /etc/passwd|sort |uniq|wc -l 6 [root@localhost ~]# hostname -I 10.0.0.200 [root@localhost ~]# ifconfig |awk 'NR==2{print $2}' 10.0.0.200 sed awk grep 组合:sed awk grep awk 10种方法,取IP # 取出 磁盘已使用 百分比 [root@localhost ~]# df -h|awk '{print $5}'|awk -F '%' '{print $1}' 已用 9 0 0 1 0 24 5 0 1 # tee 和 重定向的区别 tee会将输出结果显示在屏幕上 [root@zls ~]# date > date.txt [root@zls ~]# date |tee date.txt #xargs:将管道前面的结果当成管道后面命令的参数 [root@localhost opt]# find /etc/ -name '*.conf'|xargs cp -t /tmp/ 十种方式取ip 十种方法取ip [root@wzh ~]# ifconfig|awk 'NR==2 {print $2}' 10.0.0.200 [root@wzh ~]# ifconfig|sed -nr '2s#.*et (.*) ne.*#\1#gp' 10.0.0.200 [root@wzh ~]# ifconfig|grep -w 'broadcast'|cut -d ' ' -f10 10.0.0.200 [root@wzh ~]# ifconfig|sed -n '2p'|awk '{print $2}' 10.0.0.200 [root@wzh ~]# ifconfig|grep -w 'broadcast'|sed -r 's#.*et (.*) ne.*#\1#g' 10.0.0.200 [root@wzh ~]# ifconfig |head -2|tail -1|cut -d ' ' -f10 10.0.0.200 [root@wzh ~]# ifconfig|grep -w 'broadcast'|cut -c 14-24 10.0.0.200 [root@wzh ~]# ifconfig|awk 'NR==2'|cut -d 't' -f2|cut -d 'n' -f1 10.0.0.200 [root@wzh ~]# ifconfig|sed -n '2p'|grep -o '[0.-9]*'|head -1 10.0.0.200 [root@wzh ~]# ifconfig|sed -n '2p'|cut -d ' ' -f10 10.0.0.200 练习题 01.复制/etc/passwd文件到当前目录下,把文件中的:替换成#,不能使用sed和vim命令。 cp /etc/passwd ./ tr ':' '#' < ./passwd 02.改变文件所有者的命令是? chown 03.新建一个1.txt文件,文件内容如下 [root@centos7 ~]# cat >>1.txt 1122 > 112233 > 321 > 3306 > 8080 > 80 > 23 > 21 > 8081 > 8082 > 8085 > eof 1123 1122 112233 321 3306 8080 80 23 21 8081 8082 8085 04.接03题,显示1.txt第3行到第10行的内容(三种方法) [root@centos7 ~]# head 1.txt|tail -7 [root@centos7 ~]# awk 'NR==3,NR==10' 1.txt [root@centos7 ~]# sed -n '3,10p' 1.txt 05.接03题,显示1.txt第3行和第10行的内容(两种方法) [root@centos7 ~]# awk 'NR==3;NR==10' 1.txt [root@centos7 ~]# sed -n '3p;10p' 1.txt 06.执行命令echo "I am qiandao,my qq is 1716141363">/oldboy/oldboy.txt, [root@wzh ~]# echo "I am qiandao,my qq is 1716141363">/oldboy/oldboy.txt [root@wzh ~]# cat /oldboy/oldboy.txt I am qiandao,my qq is 1716141363 现在需要从文件中过滤出“qiandao”和“1176494252”字符串,请给出命令?(最少三种方法) [root@wzh ~]# egrep -o 'qiandao||1716141363' /oldboy/oldboy.txt qiandao 1716141363 [root@wzh ~]# awk -F '[ ,]' '{print $3,$7}' /oldboy/oldboy.txt qiandao 1716141363 [root@wzh ~]# sed -r 's#.*am (.*)(,.*)s(.*)#\1\3#g' /oldboy/oldboy.txt qiandao 1716141363 07.接上题,如果需要从文件中过滤出“qiandao,1176494252”字符串,请再给出命令? [root@wzh ~]# egrep -o 'qiandao,|1716141363' /oldboy/oldboy.txt qiandao, 1716141363 08.用什么命令可以测试另外一台服务器的某个端口是打开的 telnet 09.简述 > 和 >> 符号作用,以及两个符号之间区别 1.> 输出重定向符号 作用:将前面的内容输出到文件中并且覆盖原文件内容 2.>> 追加重定向符号 作用:在原有文件的基础上追加新内容 区别>会覆盖原文件>>是追加在文件底部不覆盖 10.vim中把所有的oldboy替换为oldgirl 给出命令 :%s#oldboy#oldgirl#g 11.管道符号的含义说明 | 作用:将管道符左边命令的标准输出,交给管道符右边命令的标准输入来处理 12.如何创建一个系统用户,创建完成如何进行切换用户,切换完毕如何确认查看 [root@wzh ~]# useradd w [root@wzh ~]# su - w 虚拟机ip 10.0.0.200 [w@wzh ~]$ whoami w 13.如何实现每次系统启动自动备份/oldboy/oldboy.txt文件,并且备份操作完在/oldboy/info.log中有备份操作提示信息 vim /etc/rc.local \cp /oldboy/oldboy.txt{,.bak} && echo oldboy.txt back is ok >> /oldboy/info.log 14.查找/app/logs下7天以前的log文件并删除(请使用xargs) find /app/logs/ -type f -mtime +7 |xargs rm -f 15.将/etc目录下大于100k的文件移动至/tmp下 (请使用xargs) find /etc/ -type f -size +100k|xargs -i mv {} /tmp/ 16.如何查看/var/log/目录下的文件数 find /var/log/ -type f |wc -l 17.硬链接可以作为源文件的备份文件,为什么还要cp命令进行备份(说明硬链接原理) 相同inode号的文件互为硬链接 cp是两个文件,硬链接实际是一个文件 18.linux系统中文件属性信息都包含什么 inode节点号 文件类型和权限 硬链接数 属主和属组 文件的大小 最后修改时间 文件或目录名 19.请说明利用管道命令和xargs命令结合是, 命令执行的原理过程 xargs将参数列表转换成小块分段传递给其他命令 读入stdin的数据转换为参数添加至命令后面 让一些不支持管道的命令可以使用管道 | 把前面命令的标准输出交给管道后面命令的标准输入 20.如何创建一个新的oldgirl用户,并且需要给用户设置密码,并且采用免交互方式创建密码 useradd oldgirl echo '123'|passwd --stdin oldgirl 21.把/etc/passwd文件中的第5到第15行的内容保存到/oldboy/test.txt中,(不低于三种方法) mkdir /oldboy touch /oldboy/test.txt awk 'NR==5,NR==15' /etc/passwd > /oldboy/test.txt sed -n '5,15p' /etc/passwd > /oldboy/test.txt head -15 /etc/passwd|tail -10 > /oldboy/test.txt 22.说一说你知道的vim里面的命令并写出意思。(不低于10个) gg :将光标移动到文件的开头 ,ngg就是移至n行行首 dd : 删除一行,(删除多行 ndd dnd :n为数字 + p = 剪切) D : 将光标之后的内容都删除 u : 撤销 $(shift+4) : 将光标移动至行尾 ^(shift+6) : 将光标移动至行首 dG : 删除光标以下的所有内容(包括光标所在行) yy : 复制,复制n 行,nyy ,yny p : 粘贴(光标所在行的下一行) R : 多个字符替换(按ESC退出替换) 23.删除oldboy.txt文件中的所有空行,有的空行里面存在tab键和空格(两种方法) sed -ri '/^[ \t]*$/d' oldboy.txt awk '!/^[ \t]*$/' oldboy.txt 24.快速返回到上一次所在的目录的命令为(cd - ) 25.给test.sh文件加上执行权限 touch test.sh chmod +x test.sh 26.将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 27.用shell在/usr/local下建立20个子目录xunlei1-xunlei20,再在这个子目录下分别建255个子目录dir1-dir255再在255个子目录下创建10000个文件xunlei1.html-xunlei10000.html mkdir -p /usr/loca/xunlie{1..20}/dir{1..255}/ touch /usr/loca/xunlie{1..20}/dir{1..255}/xunlei{1..10000}.html 28.linux如何得知服务器的的运行时长? uptime 29.rm命令修改了别名信息的文件/etc/profile,但还是不能直接删除信息,是什么原因,并写出和别名设置相关的文件及路径信息 家目录中的文件配置优于/etc目录文件的配置 /etc/profile /etc/bashrc 设置别名或变量可以全局生效 ~/.bash_profile ~/.bashrc 设置别名或变量只是相应用户生效    在家目录中有文件中设置了别名 /etc/profile -->/etc/bashrc-->~/.bashrc--> ~/.bash_profile 30.linux运维工程师都需要具备哪些职业素质? 人品 7*24 持续学习


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有